﻿using System;
using System.Collections.Generic;
using GigaSite.Domain.Entities;
using GigaSite.Domain.Interfaces.Repositories;

namespace GigaSite.Domain.DAL.Repositories
{
    /// <summary>
    /// СУБД реализация репозиторий новостей
    /// </summary>
    public class NewsRepository: BaseRepository<NewsArticle>, INewsRepository
    {
        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        /// <param name="dataContext"></param>
        public NewsRepository(GigaDataContext dataContext) : base(dataContext)
        {
        }

        /// <summary>
        /// Загружает указанную сущность по ее идентификатору
        /// </summary>
        /// <param name="id">Идентификатор сущности</param>
        /// <returns>Сущность с указанным идентификатором или Null</returns>
        public override NewsArticle Load(long id)
        {
            return Find(n => n.Id == id);
        }

        /// <summary>
        /// Возвращает список отложенных публикаций, которые уже должны быть опубликованы
        /// </summary>
        /// <returns></returns>
        public IEnumerable<NewsArticle> GetDelayedNewsReadyForPublication()
        {
            return
                Search(
                    n =>
                    n.DelayPublished && n.DelayPublicationDate != null && n.DelayPublicationDate.Value >= DateTime.Now);
            ;
        }
    }
}